package cdu.xjj.utils;

import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;

import java.beans.PropertyDescriptor;
import java.util.ArrayList;
import java.util.List;

public class BeanCopyUtils {
    // 获取 DTO 中为 null 或空字符串的属性名
    public static String[] getNullOrEmptyPropertyNames(Object source) {
        BeanWrapper src = new BeanWrapperImpl(source);
        PropertyDescriptor[] pds = src.getPropertyDescriptors();
        List<String> emptyNames = new ArrayList<>();

        for (PropertyDescriptor pd : pds) {
            String propertyName = pd.getName();
            Object srcValue = src.getPropertyValue(propertyName);
            if (srcValue instanceof String && ((String) srcValue).isEmpty()) {
                emptyNames.add(propertyName);
            }
        }
        return emptyNames.toArray(new String[0]);
    }

}
